Managing licenses of media files on playback devices

ABSTRACT

Embodiments are described herein for managing licenses of media files on playback devices in a media system. In some embodiments, each media file is purchased based on a number of licenses, each license granting permission to store the media file on a single playback device. Each media file may have an associated number of one or more licenses that specifies the maximum number of playback devices on which the media file may be stored at the same time (concurrently). The media system may comprise a home central licensing (HCL) device, a primary storage device, and playback devices coupled via a network. The primary storage device may be used to initially store newly purchased media files. The HCL device may allow or prohibit distribution of the media files on the primary storage device to playback devices by using a license manager data structure storing licensing information for each media file.

FIELD

The present invention relates to media systems, and, more specifically, to managing licenses of media files on playback devices in a media system.

BACKGROUND

The widespread use of computers, digital media devices, e.g., video, audio, image, picture, and/or gaming media devices, and the Internet has resulted in the generation and use of digital media files. Digital media files may contain binary data that provide various forms of media content (e.g., video, audio, image, or gaming content). Media files are typically stored on a computer storage medium that is accessible by computer devices, such as CD-ROMs, hard drives, memory sticks, etc.

The storage of digital media files on computer mediums allows for easy generation and transfer of digital media files. For example, it has become popular to purchase media files (e.g., video and audio files) on the Internet, and download and store the media files to computers. Also, it has become popular to generate digital photos by using a digital camera and then to transfer and store the digital photos to computers. Computer applications permit the user to manipulate and play back the media files. These types of applications have also contributed to the widespread popularity of digital media files.

The media files may then be played (decoded and presented) on a compatible playback device. A playback device may decode the digital media file to convert the digital data to analog signals (digital-to-analog conversion) and present the analog signals by using presentation components comprising video and/or audio components. For example, a video or gaming media file may be decoded and presented on a playback device having video and audio components (e.g., a display and speakers), an audio media file may be decoded and presented on a playback device having audio components (e.g., speakers or headphones), and an image media file may be decoded and presented on a playback device having a video component.

In addition to computer monitors, a television may be used as a video component (e.g., screen and/or display) for presenting video content and an audio component (e.g., speakers) for presenting audio content of a media file. Televisions may also present television content. Large, high definition televisions are currently popular for home use. With 1080 lines per picture and a screen aspect ratio (width to height ratio) of 16:9 (compared to 525 lines per picture and a 4:3 screen aspect ratio of standard definition television), high definition televisions provide more resolution than standard definition television (SDTV). With the larger displays available today, on televisions as well as computer monitors, modern displays may easily present multiple windows of media.

Also, the widespread use of computers, digital media devices, e.g., video, audio, image, picture, and/or gaming media devices, and the Internet has resulted in the generation and use of digital media files. Digital media files may contain binary data and comprise various types of media files (e.g., video, audio, image, or gaming files). Media files are typically stored on a computer storage medium that is accessible by computer devices, such as CD-ROMs, hard drives, memory sticks, etc.

The storage of digital media files on computer mediums allows for easy generation and transfer of digital media files. For example, it has become popular to purchase media files (e.g., video and audio files) on the Internet, and download and store the media files to computers. The media files may then be played (decoded and presented) on a compatible playback device. A playback device may decode the digital media file to convert the digital data to analog signals (digital-to-analog conversion) and present the analog signals by using presentation components.

However, as the use of digital media files becomes more popular, media file piracy (e.g., illegal copying of media files) has also become of greater concern to media producers, such as companies or individuals that produce movies, music, or other media. A conventional method of attempting to control media piracy has been to prohibit consumers from any copying of protected media files. Generally this method has been met with disapproval as consumers continually demand that purchased media files be shared among their media devices. As such, an improved method of controlling media piracy that satisfies consumer demands while also protecting rights of media producers is needed.

SUMMARY

Methods and apparatus are described herein for managing licenses of media files on playback devices in a media system. In some embodiments, each media file is purchased by a user based on a number of licenses. A media file may be purchased with one or more licenses, each license granting legal permission for a user to store the media file on a single playback device. In these embodiments, different licensing versions of the same media file may be offered for purchase, each version having a different number of associated licenses for the media file. For example, a purchase of a licensing version of a particular music file having 3 licenses allows the user to store the particular music file on a maximum of three playback devices concurrently. As such, each media file may have an associated number of licenses (comprising one or more licenses) that specifies the maximum number of playback devices on which the media file is permitted to be stored at the same time (concurrently).

Various methods may be used to determine the number of licenses associated with a media file. In some embodiments, each media file is embedded with licensing data that specifies the number of licenses purchased and associated with the media file. In other embodiments, each media file is embedded with a version identifier that is mapped to a number of associated licenses using a license mapping data structure. In further embodiments, a version identifier of a media file is determined by producing a content identifier value (e.g., a fingerprint, checksum, or hash value) for the media file representing the data contents of the media file. The version identifier (comprising the content identifier value) being mapped to a number of associated licenses using a license mapping data structure.

In some embodiments, the media system comprises a license tracking service (LTS) server and one or more home systems each coupled to the LTS server through a network, such as the Internet. Each home system may comprise a home central licensing (HCL) device, a primary storage device, and at least one playback device coupled to each other through a local home network. The primary storage device may be used to initially store newly purchased media files in the home system. For example, a media file may be purchased through a download from the Internet or purchased on a physical medium and/or media (e.g., CD, DVD, Blu-ray, etc.) from a store and copied and/or stored to the primary storage device. The HCL device may then manage licenses and distribution of the media files on the primary storage device to playback devices within the home system. Each playback device may be configured for receiving and storing at least one media file, and playing back stored media files.

Each HCL device at each home system may produce and maintain a license manager data structure for storing data needed for managing the licenses and distribution of media files within the home system. The license manager data structure may store data describing media files and playback devices of the home system. In some embodiments, each media file may be represented by a media file entry in the license manager data structure, the media file entry containing multiple fields for storing data describing the media file. For example, a media file entry may contain fields for a media file identifier (e.g., filename), an address pointer to a storage location where the media file is stored on the primary storage device, a number of licenses associated with the media file, a number of playback devices on which the media file is currently stored, and/or playback device identifiers of the playback devices on which the media file is currently stored. The license manager data structure may be stored locally in the home system (e.g., on the HCL device) or stored externally on the LTS server.

For the media files stored on the primary storage device, the HCL device may allow or not allow and/or prohibit distribution of the media files to the playback devices for storage. This determination is made using the license manager data structure. The HCL device may implement a license manager engine that manages licenses and distribution of media files to the playback device. Media files in the home system may be copied to or removed from playback devices by using the license manager engine in response to received user requests. The license manager engine may comprise a user interface for receiving user requests. For example, a received user request may comprise a “distribution request” for copying a particular media file from the primary storage device to a particular playback device for storage on the playback device. This process is referred to as a distribution of the media file to the playback device. As a further example, a received user request may comprise a “removal request” for removing and/or deleting a particular media file from a particular playback device.

Upon receiving a distribution request for a particular media file to a particular playback device, the license manager engine may determine whether to allow or prohibit distribution of the media file to the playback device by locating and examining a media file entry representing the media file in the license manager data structure. The media file entry may specify a first number comprising the number of licenses purchased and associated with the media file and a second number comprising the number of playback devices on which the media file is already currently stored. The license manager engine may determine to allow distribution of the media file to the playback device if the first number is greater than the second number. The license manager engine may then allow transmitting or distributing the media file from the primary storage device to the playback device for storage (e.g., through the local network). The license manager engine may determine to prohibit distribution of the media file to the playback device if the first number is not greater than the second number. The license manager engine may then display an error message indicating there are not sufficient licenses for the media file to be distributed to the playback device, and not allow transmitting and/or distributing the media file from the primary storage device to the playback device for storage.

Upon receiving a removal request for a particular media file from a particular playback device, the license manager engine may remove and/or delete the media file from the playback device (assuming the playback device is currently coupled with the HCL device through the local network). The license manager engine may then update the media file entry representing the media file in the license manager data structure to reflect the current number of playback devices on which the media file is stored. The license manager engine may do so by decrementing the number of playback devices on which the media file is already currently stored.

Each HCL device in a home is coupled with a license tracking service (LTS) server through an external network, such as the Internet. In some embodiments, the LTS server may be used to externally store a license mapping data structure for mapping version identifiers of media files to a number of licenses associated with the version identifiers. In these embodiments, the license manager engine may determine a version identifier of a media file and communicate with the LTS server (through the external network) to examine the license mapping data structure and determine the number of licenses associated with the version identifier. In further embodiments, the LTS server may also be used to externally store the license manager data structure for each HCL device. In these embodiments, the license manager engine may communicate with the LTS server (through the external network) to read data from and write and/or update data to the license manager data structure. The license mapping data structure and license manager data structure may be stored externally to the LTS server to help prevent improper user manipulations or hacking of the licensing information of the media files.

In some embodiments, the LTS server also performs, via the external network, a registration process and a disassociation process for the HCL devices and playback devices of the home systems. In the registration process, each HCL device and playback device is registered with the LTS server by using a unique identifier. Each HCL device and playback device may have a unique identifier that uniquely identifies the HCL device or playback device from all other HCL devices or playback devices used worldwide. For example, the unique identifier may comprise a Media Access Control address (MAC address) of the HCL device or the playback device.

After a HCL device is registered with the LTS server, one or more playback devices may be registered and associated with the HCL device. In some embodiments, the LTS server only allows a single playback device to be concurrently registered and associated with a single HCL device worldwide (referred to as a “one-to-one association”). Permitting a playback device to be associated with only a single HCL device at any given time further provides piracy protections as it helps ensure that media files of playback players are not shared and/or distributed between different HCL devices of different home systems.

In some embodiments, the LTS server may store and maintain a device registration data structure for storing registration information regarding HCL devices and playback devices. The device registration data structure may comprise a plurality of HCL device entries, each HCL device entry representing an HCL device, and each HCL device entry containing multiple fields for storing data describing the HCL device. For example, a HCL device entry may contain fields for a HCL device identifier that uniquely identifies the HCL device (e.g., MAC address) and a playback device identifier (e.g., MAC address) that uniquely identifies each playback device currently associated with the HCL device.

In some embodiments, after a playback device is registered and/or associated with a particular HCL device, the playback device may be later un-registered and/or disassociated from the particular HCL device. In some of these cases the same playback device may then be registered and/or associated with a new HCL device. In these embodiments, the playback device may be un-registered and/or disassociated from a HCL device only if there are no media files currently stored on the playback device.

The embodiments described herein may provide an improved method for reducing media file piracy (e.g., illegal copying of media files) that is of concern to media producers. In these embodiments, media producers may put a limit on the number of playback devices on which a media file may be stored simultaneously based on the number of licenses purchased by the user for the media file. The media producer may charge different prices for the different licensing versions of the media file that each provide a different number of licenses. The embodiments described herein may also provide consumers the ability to legally distribute and/or share purchased media files among their various playback devices.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1A is a block diagram of an exemplary media system environment in which some embodiments operate;

FIG. 1B is a block diagram of an exemplary media system environment showing components of a home system;

FIG. 2 is a diagram illustrating various components of a HCL device, in accordance with some embodiments;

FIG. 3 is a flowchart for a method for producing the license manager data structure;

FIG. 4 shows an exemplary license manager data structure;

FIG. 5 shows an exemplary license mapping data structure;

FIG. 6 is a flowchart for a method for managing licenses and distributing media files in a home system;

FIG. 7 shows an exemplary license manager data structure having exemplary data;

FIG. 8 is a flowchart for a method for registering HCL devices and playback devices;

FIG. 9 is a flowchart for a method for disassociating a playback device from a HCL device; and

FIG. 10 shows an exemplary device registration data structure.

DETAILED DESCRIPTION

In the following description, numerous details are set forth for purpose of explanation. However, one of ordinary skill in the art will realize that the embodiments described herein may be practiced without the use of these specific details. In other instances, well-known structures and devices are shown in block diagram form in order to not obscure the description with unnecessary detail.

The description that follows is divided into three sections. Section I describes a media system environment for managing media licenses in which some embodiments operate. Section II describes managing licenses and distribution of media files in a home system. Section III describes a registration process of a HCL device and playback devices with an LTS server.

I. Media System Environment for Managing Media Licenses A. Media System

FIG. 1A is a block diagram of an exemplary media system environment 100 in which some embodiments operate. As shown in FIG. 1A, the media system 100 comprises a license tracking service (LTS) server 145 and a plurality of home systems 101, 111, and 112 coupled to the LTS server 145 through a network 135. The embodiments herein may be described in relation to the home system 101. In some embodiments, the description of the example home system 101 may also pertain to the other home systems 111 and 112 as well.

The LTS server 145 may store data structures 102, 103, and 104 for managing licenses, distributing media files, and registering devices within the home systems 101. In some embodiments, the LTS server 145 may store a separate license managing data structure 102 for each home system 101 for managing licenses and distributing media files within the respective home system 101. In some embodiments, the LTS server 145 may store a license mapping data structure 103 for the plurality of home systems 101 for mapping version identifiers of media files to a number of licenses associated with the version identifiers. In some embodiments, the LTS server 145 may store a device registration data structure 104 for the plurality of home systems 101 for registering HCL and playback devices within the plurality of home systems 101. In other embodiments, any or all of the data structures 102, 103, and/or 104 may be stored elsewhere, for example, within the home systems 101. For example, in some embodiments, each home system 101 may store its own license managing data structure 102 for managing licenses and distributing media files within its home system 101.

Each home system 101 may be coupled to the LTS server 145 through an external network 135. The external network 135 may be implemented by using, for example, a wired or wireless network, a wide area network (WAN), a virtual private network (VPN) implemented over a public network such as the Internet, etc., and/or by using radio frequency (RF), infrared (IR), Bluetooth, etc. Each home system 101 may also be coupled to media content providers 140. The media content providers 140 may provide media files, for example, for purchasing and/or delivery to the home system 101.

B. Home System

FIG. 1B is a block diagram of an exemplary media system environment 100 showing components of a home system 101. As shown in FIG. 1B, the example home system 101 may comprise a home central licensing (HCL) device 110, a primary storage device 120, and at least one playback device 105 coupled to each other through a local home network 125.

The HCL device 110 may comprise hardware and/or software components configured for managing licenses, distributing media files, and registering devices within the home system 101. The HCL device 110 may do so by implementing a license manager engine. The license manager engine may comprise a user interface for interacting with the HCL device 110 and for receiving user requests, in accordance with embodiments described herein. The user interface of the license manager engine may be displayed on a display 130 coupled with the HCL device 110. The display 130 may comprise, for example, a television or computer monitor. The details of the HCL device 110 are discussed below in relation to FIG. 2.

C. Primary Storage Device

A primary storage device 120 may comprise hardware and/or software components configured for storing media files. The primary storage device 120 may comprise one or more writable media storage devices, such as disk drives, video tape, magnetic tape, optical devices, CD, DVD, Blu-ray, flash memory, Magnetic Random Access Memory (MRAM), Phase Change RAM (PRAM), a solid state storage device, or another similar device adapted to store data. A primary storage device 120 may implement a file system to provide directories containing filenames for media files.

In some embodiments, the primary storage device 120 and the HCL device 110 may comprise a single integrated device, e.g., computer system, that is coupled to the network 125. In other embodiments, a primary storage device 120 and the HCL device 110 may comprise separate devices each coupled to the network 125 separately. In these embodiments, the primary storage device 120 may comprise a dedicated stand-alone storage device, such as a network-attached storage (NAS) or Storage Area Network (SAN) device.

The primary storage device 120 may be used to initially store newly purchased media files in the home system 101. In some embodiments, the primary storage device 120 is used to first store newly purchased media files in the home system 101, whereby the HCL device 110 may process and analyze the media files from the primary storage device 120 in accordance with embodiments described herein. The HCL device 110 may then manage licenses and distribution of the media files on the primary storage device 120 to playback devices 105 within the home system 101. The primary storage device 120 may store a plurality of digital media files of various types. In some embodiments, a primary storage device 120 may store a plurality of video, audio, image, and/or gaming media files. In other embodiments, a primary storage device 120 may store media files of other types.

The media files stored on the primary storage device 120 may originate from various sources. For example, the HCL device 110 may be coupled to content providers 140 and, responsive to received user requests, access such content providers 140 for purchasing and downloading media files that are then stored to the primary storage device 120. The HCL device 110 may be coupled to the content providers 140 through an external network 135. As another example, media files may be purchased on a physical medium and/or media (e.g., CD, DVD, Blu-ray, etc.) from a store and then copied and/or stored to the primary storage device 120. In other embodiments, the media files stored on the primary storage device 120 may originate from other sources.

D. Playback Device

In some embodiments, each playback device may be configured for receiving and storing at least one media file, and playing back stored media files. Each playback device 105 may comprise a playback storage device 106, a decoder 107, and presentation components 108. The playback storage device 106 may store media files distributed and/or loaded from the primary storage device 120 by the HCL device 110. The playback storage device 106 may comprise a device similar to the primary storage device 120 and may be similarly configured for storing digital media files for example, a disk drive, flash memory, etc. The playback device storage device 106 typically comprises a significantly smaller amount of storage space than the primary storage device 120.

The playback device 105 also may comprise a decoder engine 107 and presentation components 108 for playing back (presenting) media content of the stored media files. The decoder engine 107 may be configured for decoding the encoded digital media files stored on the playback storage device 106. The decoder 107 may be configured for converting the encoded digital data of the media files to analog signals, e.g., digital-to-analog conversion, and pass the analog signals to presentation components 108. Alternatively, the presentation components receive and process digital signals directly by using an interface such as DVI, HDMI, and the like.

The presentation components 108 may include for example, video and/or audio components, that are configured for receiving and presenting the signals representing the media content, e.g., video and/or audio content, stored on the media files. For example, the presentation components 180 may include a display (such as a television or monitor), speakers, headphones, and/or output components for outputting video and/or audio to the display or to the speakers or headphones. A variety of displays and/or televisions are contemplated including, for example, a liquid crystal display “LCD”, a light emitting diode (LED), a cathode ray tube (CRT), and/or a plasma type television, monitor and/or display. For example, a video or gaining media file may be decoded and presented on a playback device having video and audio components (e.g., a display and speakers or headphones), an audio media file may be decoded and presented on a playback device having audio components (e.g., speakers or headphones), an image media file may be decoded and presented on a playback device having a video component, etc.

In some embodiments, the playback device 105 may comprise a portable mobile device whereby the storage, decoding, and presentation components are integrated within a single portable device. Examples of portable mobile playback devices include computer laptops, cell phones, smartphones, BlackBerrys, personal digital assistants (PDAs), convergent devices, portable video players, portable music players (e.g., MP3 players), portable video game players, car media players, playback devices installed in cars, etc. In other embodiments, a portable device comprises other such devices. Note that typically, if the playback device 105 is a portable audio device, the presentation component 108 of the playback device 105 may comprise only an audio output component that outputs analog audio to a set of external headphones.

In other embodiments, the playback device 105 may comprise a non-portable device whereby the storage, decoding, and/or presentation components are contained within two or more separate devices, that collectively comprise the playback device 105. For example, a first device may contain the storage and decoding components 106 and 107, the first device being coupled with a second device that includes the presentation components 108, the first and second devices collectively comprising the playback device 105. Examples of the first device include a digital video recorder (DVR), a CD or DVD player with a hard drive, etc. Examples of the second device include a television such as for presenting videos, images, and games, a stereo receiver and/or amplifier for presenting audio, etc. In other embodiments, the first and second devices comprise other such devices.

F. Network

The network 125 may comprise a wired, direct connect, and/or wireless system. The network 125 may be implemented by using, for example, a wired or wireless network, a personal area network (PAN), a local area network (LAN), a wide area network (WAN), a virtual private network (VPN) implemented over a public network such as the Internet, etc., and/or by using radio frequency (RF), infrared (IR), Bluetooth, etc. In other embodiments, the network 125 may be implemented by using other means. For example, the network 125 may comprise a network implemented in accordance with standards, such as Ethernet 10/100/1000 over Category 5 or 6, HPNA, Home Plug, IEEE 802.x, IEEE 1394, USB 1.1, 2.0, etc.

Some embodiments described herein may be implemented through use of the networks 125 and 135. In particular, embodiments requiring communications and/or interactions between components of the media system 100 including, for example, the LTS server 145, the HCL device 110, the primary storage device 120, and the playback device(s) 105 may be implemented through the networks 125 and 135. For example, media files on the primary storage device 120 may be examined and loaded to playback devices by the HCL device 110 and media files on a playback device may be deleted by the HCL device 110 through use of the local network 125. As a further example, an HCL or playback device may be registered with the LTS server through the external network 135.

G. HCL Device

FIG. 2 is a diagram illustrating various hardware and software components of the HCL device 110, in accordance with some embodiments. The HCL device 110 may comprise a computer device comprising processor(s) 205, memory 210, a network adapter 215, and a storage component 225 coupled by a bus 230.

The processors 205 are the central processing units (CPUs) of the HCL device 110. The processors 205 may include programmable general-purpose or special-purpose microprocessors, digital signal processors (DSPs), programmable controllers, application specific integrated circuits (ASICs), programmable logic devices (PLDs), or the like, or a combination of such devices. A network adapter 215 may comprise mechanical, electrical and signaling circuitry needed to couple the HCL device 110 to the networks 125 and 135 and to receive and transmit data over the networks 125 and 135. For example, the network adapter 215 may comprise a network port controller, e.g., Ethernet cards, for receiving and transmitting data over a network. A network adapter 215 may be used to couple the HCL device 110 to a primary storage device 120, a playback device 105, LTS server 145, and content providers 140 through the networks 125 and 135.

The storage component 225 may comprise a non-volatile storage device that stores information within the HCL device 110. The HCL device 110 loads information stored on the storage component 225 into a memory 210 from which the information is accessed by the processors 205. In some embodiments, the license manager data structure 102 is stored on a storage component 225 that is non-volatile. In other embodiments, the license manager data structure 102 is stored on the LTS server. In some embodiments, the storage component 225 may also initially store media files and therefore comprise or function as a primary storage device 120.

The memory 210 comprises storage locations that are addressable by the processor 205 for storing software program code. The processor 205 and adapters may, in turn, comprise processing elements and/or logic circuitry configured to execute the software code. For example, the memory 210 may be a random access memory (RAM), a read-only memory (ROM), or the like.

In some embodiments, the memory 210 stores instructions and/or data for an operating system 250, a license manager engine 270, and a license manager data structure 102. The license manager engine 270 may manage licenses and distribute media files within the home system 101 by using the license manager data structure 102. The license manager engine 270 may comprise a user interface application for interacting with the HCL device 110 and for receiving user requests, in accordance with embodiments described herein. The user interface of the license manager engine may be displayed on a display 130 coupled with the HCL device 110.

In some embodiments, the HCL device 110 comprises a device having full-time or scheduled access to the Internet (through network 135) for allowing communication with the LTS server 145 whenever required. In some embodiments, the LTS server 145 also comprises a computer having the same or similar hardware components as the HCL device 110, as described in relation to FIG. 2. For example, the LTS server 145 may also comprise a computer comprising a processor(s) 205, memory 210, a network adapter 215, and a storage component 225 coupled by a bus 230. The storage component 225 of the LTS server may store data structures 102, 103, and 104 for managing licenses, distributing media files, and registering devices within the home systems 101.

II. Managing Licenses and Distribution of Media Files in a Home System A. Producing the License Manager Data Structure

FIG. 3 is a flowchart for a method 300 for producing the license manager data structure 102. The method 300 of FIG. 3 is described in relation to FIG. 4 which shows an exemplary license manager data structure 102 and FIG. 5 which shows an exemplary license mapping data structure 103. In some embodiments, some of the steps of the method 300 may be performed automatically, without requiring user or human initiation, interaction, or intervention. The order and number of steps of the method 300 are for illustrative purposes only and, in other embodiments, a different order and/or number of steps are used. In some embodiments, some of the steps of the method 300 may be performed by the license manager engine 270 implemented on the HCL device 110. To perform the steps of the method 300, the license manager engine 270 may communicate and interact with the primary storage device 120 or playback devices 105 through the local network 125 or the LTS server 145 or media content providers 140 through the external network 135.

As shown in FIG. 3, the method 300 begins by producing (at a step 305) the license manager data structure 102. The license manager data structure 102 may be stored locally in the home system 101 (e.g., on the HCL device 110) or stored externally on the LTS server 145. When filled with data describing media files, the license manager data structure 102 contains a plurality of media file entries. FIG. 4 shows an exemplary license manager data structure 102. As shown in FIG. 4, the license manager data structure 102 comprises a plurality of media file entries 401, 402, and 403, each media file entry representing a media file. Each media file entry 401 comprises a plurality of data fields for storing data describing the media file. In some embodiments, a media file entry 401 may contain fields for a media file identifier 405 (e.g., filename), an address pointer 410 (to a storage location where the media file is stored on the primary storage device), a number of licenses 415 (associated with the media file), a number of playback devices 420 (on which the media file is currently stored), and/or playback device identifier(s) 425 of the playback device(s) on which the media file is currently stored.

The method 300 then receives (at a step 310) a current media file in the home system 101 and stores the current media file to the primary storage device 120. The current media file may be stored with a filename at a storage address on the primary storage device 120. The current media file may originate from various sources. For example, the current media file may be purchased and stored and/or downloaded from a content provider 140 to the primary storage device 120 or purchased on a physical medium and/or media (e.g., CD, DVD, Blu-ray, etc.) and then copied and/or stored to the primary storage device 120.

The method 300 then determines (at a step 315) a number of licenses associated with the current media file. Various methods may be used to determine the number of licenses associated with the current media file. In some embodiments, the current media file is embedded with licensing data that specifies the number of licenses purchased and associated with the media file. In these embodiments, the method 300 may read the embedded licensing data to determine the number of associated licenses. In other embodiments, each media file is embedded with a version identifier that is mapped to a number of licenses by using a license mapping data structure 103. The license mapping data structure 103 may be stored locally in the home system 101 (e.g., on the HCL device) or stored externally on the LTS server 145.

In further embodiments, a version identifier of a media file is determined by producing a content identifier value for the media file representing the data contents of the media file. The version identifier (comprising the content identifier value) then being mapped to a number of associated licenses by using the license mapping data structure 103. For example, the content identifier value of a media file may be determined using a fingerprint, checksum, or hash operations (such as Message Digest 5, SHA, etc.) that produces a fingerprint, checksum, or hash value (comprising the content identifier value) that represents the data contents of the media file. Regardless of the particular content identifier operation used to produce the content identifier value, typically the content identifier operation is configured such that when two media files have the same content identifier value, there is a high probability that the two media files have the same data content as well.

FIG. 5 shows an exemplary license mapping data structure 103. As shown in FIG. 5, the license mapping data structure 103 comprises a plurality of media file version entries, each media file version entry representing a licensing version of a media file. Each media file version entry may comprise a data field for a media file version identifier 505 and a data field for a number of licenses 510 associated with the version identifier 505. Note that the license mapping data structure 103 may contain a set 501 of media file version entries for each different media file. For example, MediaFile1 may have a plurality of different licensing versions, each licensing version having a different number of licenses. In some embodiments, the method 300 may determine (at a step 315) a media file version identifier 505 of the current media file and map the media file version identifier 505 to a number of licenses 510 associated with the current media file by using a license mapping data structure 103.

The method 300 then produces (at a step 320) an entry 401 (“current media file entry”) in the license manager data structure 102 and stores data for the current media file in data fields of current media file entry. For example, the method 300 may store the current media file filename 405, an address pointer 410, a number of associated licenses 415 (determined at step 315), a number of playback devices 420 on which the media file is currently stored (which is initially set to 0), and/or playback device identifiers 425 of the playback devices on which the media file is currently stored (which is initially set to null values). In some embodiments, the number of playback devices 420 on which the media file is currently stored is initially set to 0 since the storage of the media file to the primary storage device does not count as use of a license (and thus does not count against the number of associated licenses).

The method 300 then continues at step 310 to repeatedly process media files and produce media file entries 401 representing the media files in the license manager data structure 102. FIG. 4 shows exemplary data produced and stored to the media file entries 401 for exemplary media files processed by the method 300.

B. Managing Licenses by Using the License Manager Data Structure

FIG. 6 is a flowchart for a method 600 for managing licenses and distributing media files in a home system 101. The method 600 of FIG. 6 is described in relation to FIG. 7 which shows an exemplary license manager data structure 102. In some embodiments, some of the steps of the method 600 may be performed automatically, without requiring user or human initiation, interaction, or intervention. The order and number of steps of the method 600 are for illustrative purposes only and, in other embodiments, a different order and/or number of steps are used. In some embodiments, some of the steps of the method 600 may be performed by the license manager engine 270 implemented on the HCL device 110. To perform the steps of the method 600, the license manager engine 270 may communicate and interact with the primary storage device 120 or playback devices 105 through the local network 125 or the LTS server 145 or media content providers 140 through the external network 135. In some embodiments, the methods 300 of FIGS. 3 and 600 of FIG. 6 may be performed independently and simultaneously.

As shown in FIG. 6, the method 600 begins by loading (at a step 605) the license manager data structure 102 into memory 210. The license manager data structure may be loaded locally from the home system 101 or externally from the LTS server 145. The method 600 then determines (at a step 610) if a distribution request has been received for loading a current media file from the primary storage device to a current playback device for storage on the playback device. For example, the distribution request may be received from a user through a user interface of the license manager engine 270.

If so, the method 600 locates and examines (at step 615) data fields of a current media file entry 401 representing the current media file in the license manager data structure 102 (e.g., by finding the media file entry 401 having the same filename field 405 as the current media file). Using the data of the current media file entry 401, the method 600 then determines (at a step 630) a first number 415 comprising the number of licenses associated with the media file and a second number 420 comprising the number of playback devices on which the media file is already currently stored, and determines if the first number is greater than the second number.

If not, this indicates that the maximum number of playback devices that the current media file may be stored (as allowed by the number of purchased licenses) has been reached and the current media file may not be distributed and/or stored to any further devices. As such, if the first number is not greater than the second number, the method 600 displays (at step 635) an error message (e.g., displayed through the user interface) indicating there are not sufficient licenses for the current media file to be distributed to the playback device, and does not allow storing of the current media file from the primary storage device to the current playback device. The method then continues at step 610.

If the first number is greater than the second number, this indicates that the maximum number of playback devices that the current media file may be stored (as allowed by the number of purchased licenses) has not been reached and the current media file may be distributed and/or stored to further devices. As such, if the first number is greater than the second number, the method 600 stores and/or copies (at step 640) the current media file from the primary storage device to the current playback device (assuming the current playback device is currently coupled with the HCL device through the local network).

The method updates (at step 645) the current media file entry 401 of FIG. 4 in the license manager data structure to reflect the distribution of the current media file to the current playback device. The method 600 may do so by incrementing the number 420 of playback devices on which the media file is currently stored. The method may also add the identifier (e.g., MAC address) of the current playback device to the playback device identifier(s) 425 in the current media file entry 401. The method then continues at step 610.

If the method 600 determines (at step 610, “No”) that a distribution request is not received, the method 600 determines (at step 650) if a removal request for removing and/or deleting a current media file from a current playback device is received. For example, the removal request may be received from a user through a user interface of the license manager engine 270. If not, the method continues at step 610. If so, the method 600 removes and/or deletes (at step 655) the current media file from the current playback device (assuming the current playback device is currently coupled with the HCL device through the local network).

The method 600 then locates and updates (at step 660) a current media file entry 401 representing the current media file in the license manager data structure to reflect the removal of the current media file. The method 600 may do so by decrementing the number 420 of playback devices on which the current media file is currently stored. The method may also remove the identifier (e.g., MAC address) of the current playback device from the playback device identifier(s) 425 in the current media file entry 401. The method then continues at step 610.

FIG. 7 shows an exemplary license manager data structure 102 having exemplary data for illustrating steps of the method 600. For example, the method 600 may receive (at step 610, “Yes”) a distribution request for loading MediaFile1 from the primary storage device to a current playback device. If a distribution request is received at the step 610, the media file entry 401 representing MediaFile1 in the license managing data structure 102 is located and specifies that a first number 415 comprising the number of associated licenses equals “3” and a second number 420 comprising the number of playback devices on which the media file is already currently stored equals “1” in the example of FIG. 7. Thus the method determines that the first number is greater than the second number and the MediaFile1 may be stored to the current playback device. The method would then update the MediaFile1 entry 401 in the license manager data structure by incrementing the number 420 of playback devices on which the media file is currently stored and add the identifier of the current playback device to the playback device identifier(s) 425 in the MediaFile1 entry 401.

As another example, the method 600 may receive (at step 610, “Yes”) a distribution request for loading MediaFile2 from the primary storage device to a current playback device. The media file entry 401 representing MediaFile2 in the license manager data structure 102 is located and specifies that a first number 415 comprising the number of associated licenses equals 1 and a second number 420 comprising the number of playback devices on which the media file is already currently stored equals “1.” Thus, the method 600 determines that the first number is not greater than the second number and the MediaFile2 may not be stored to the current playback device. The method 600 may display an error message that there are not sufficient licenses for MediaFile2 to be distributed to the playback device, and does not allow storing of MediaFile2 to the current playback device.

As a further example, the method 600 may receive (at step 650, “Yes”) a removal request for removing MediaFile3 from a current playback device. The method 600 deletes MediaFile3 from the current playback device and then locates and updates a media file entry 401 representing MediaFile3 in the license manager data structure 102. The method may do so by decrementing (e.g., from 3 to 2) the number 420 of playback devices on which MediaFile3 is currently stored and remove the identifier of the current playback device from the playback device identifier(s) 425 in the media file entry 401.

III. Registration Process with the LTS Server

In some embodiments, the LTS server 145 also performs, via the external network 135, a registration process and a disassociation process for the HCL devices and playback devices of the home systems 101. In the registration process, each HCL device 110 and playback device 105 is registered with the LTS server 145 by using a unique identifier. Each HCL device 110 and playback device 105 may have a unique identifier that uniquely identifies the HCL device 110 or the playback device 105 from all other HCL devices or playback devices used worldwide. For example, the unique identifier may comprise a Media Access Control address (MAC address) of the HCL device or the playback device.

After a HCL device is registered with the LTS server, one or more playback devices may be registered and associated with the HCL device. In some embodiments, the LTS server only allows a single playback device to be concurrently registered and associated with a single HCL device worldwide (referred to as a “one-to-one association”). Permitting a playback device to be associated with only a single HCL device at any given time further provides piracy protections as it helps ensure that media files of playback players are not shared and/or distributed between different HCL devices of different home systems.

In some embodiments, after a playback device is registered and/or associated with a particular HCL device, the playback device may be later un-registered and/or disassociated from the particular HCL device, so that it may be registered and/or associated with a new HCL device. In some of these embodiments, the playback device may be disassociated with a HCL device only if there are no media files currently stored on the playback device.

FIG. 8 is a flowchart for a method 800 for registering HCL devices and playback devices with the LTS server. The method 800 of FIG. 8 is described in relation to FIG. 10 which shows an exemplary device registration data structure 104. In some embodiments, some of the steps of the method 800 may be performed automatically, without requiring user or human initiation, interaction, or intervention. The order and number of steps of the method 800 are for illustrative purposes only and, in other embodiments, a different order and/or number of steps are used. In some embodiments, some of the steps of the method 800 may be performed by the LTS server 145.

The method 800 begins by the LTS server 145 producing (at a step 805) a device registration data structure 104 and storing to a storage component. In some embodiments, the LTS server may store and maintain a device registration data structure 104 for storing registration information regarding HCL devices and playback devices.

FIG. 10 shows an exemplary device registration data structure 104. As shown in FIG. 10, the device registration data structure 104 comprises a plurality of HCL device entries 1001, 1002, and 1003 . . . , each HCL device entry representing a HCL device. The embodiments herein may be described in relation to the HCL device entry 1001. In some embodiments, the description of the HCL device entry 1001 may also pertain to the other HCL device entries 1002 and 1003 . . . , as well. Each HCL device entry 1001 may comprise a plurality of data fields for storing data describing the HCL device. In some embodiments, a HCL device entry 1001 may contain fields for a HCL device identifier 1005 that uniquely identifies the HCL device (e.g., MAC address) and a playback device identifier 1010 (e.g., MAC address) that uniquely identifies each playback device currently associated with the HCL device. The MAC address of a device may comprise a unique identifier assigned to the hardware device by the manufacturer for identification, and used in the Media Access Control protocol layer. If assigned by the manufacturer, a MAC address may encode the manufacturer's registered identification number. The MAC address may also be known as an Ethernet Hardware Address (EHA), hardware address, adapter address, or physical address.

The method 800 then determines (at a step 810) if a request for registering a current playback device for a current HCL device 110 has been received from a HCL device 110 of a home system 101. If not, the method 800 determines (at a step 815) if a request for registering a current HCL device 110 has been received from a HCL device 110 of a home system 101. If not, the method 800 continues at step 810. If so, the method 800 determines (at step 818) the unique identifier (e.g., MAC address) of the current HCL device 110 to be registered. The method then produces (at step 820) a current HCL device entry 1001 for the current HCL device in the device registration data structure 104 and stores the HCL device identifier 1005 to the current HCL device entry 1001. The method 800 then continues at step 810.

If the method 800 determines (at step 810, “Yes”) that a request for registering a current playback device for a current HCL device 110 has been received from a HCL device 110, the method determines (at step 825) the unique identifiers (e.g., MAC addresses) of the current HCL device 110 and the current playback device to be registered. The method 800 then examines the HCL device entries 1001, 1002, 1003 . . . , of the device registration data structure 104 and determines (at step 830) whether the current playback device 105 is already registered to another HCL device 110 (e.g., by determining whether the identifier of the current playback device 105 is already listed within another HCL device entry 1001, 1002, 1003 . . . ). If so, the method 800 sends to the requesting HCL device 110 an error message indicating that the current playback device is already registered to another HCL device and can not be registered with the current HCL device. In some embodiments, the method 800 only allows a playback device to be concurrently registered and associated with a single HCL device worldwide (referred to as a “one-to-one association”).

If not, the method 800 locates (at step 840) a current HCL device entry representing the current HCL device in device registration data structure 104. The method 800 then registers (at step 845) the current playback device with the current HCL device by updating the current HCL device entry by adding the identifier 1010 of the current playback device to the current HCL device entry 1001. The method 800 then continues at step 810.

FIG. 9 is a flowchart for a method 900 of disassociating a playback device from a HCL device. The method 900 of FIG. 9 is described in relation to FIG. 10 which shows an exemplary device registration data structure 104. In some embodiments, some of the steps of the method 900 may be performed automatically, without requiring user or human initiation, interaction, or intervention. The order and number of steps of the method 900 are for illustrative purposes only and, in other embodiments, a different order and/or number of steps are used. In some embodiments, some of the steps of the method 800 may be performed by the LTS server 145 and the license manager engine 270 implemented on the HCL device 110 that may communicate through the external network 135. To perform some steps of the method 900, the license manager engine 270 may communicate and interact with playback devices 105 through the local network 125.

The method 900 begins when the HCL device receives (at step 905) an un-registration and/or disassociation request for a current playback device from a current HCL device. For example, the disassociation request may be received from a user through a user interface of the license manager engine 270. The HCL device then determines (at step 910) if there are any media files stored on the current playback (PB) device. If not, the HCL device determines (at a step 915) if the user wishes to remove all media files stored on the current playback device. For example, the user interface of the license manager engine 270 may display a message to remove all media files on the current playback device and then receive user input approving removal of all media files. If not, the method ends. If so, the HCL device removes (at step 920) all media files on the current playback device and continues to step 930. In some embodiments, a playback device may be disassociated with a HCL device only if there are no media files currently stored on the playback device.

If the HCL device determines (at step 910, “Yes”) that there are no media files stored on the current playback device, the HCL device sends (at step 930) a disassociation request to the LTS server to disassociate the current playback device from the current HCL device. The LTS server then locates (at step 940) a current HCL device entry representing the current HCL device in device registration data structure 104. The LTS server then disassociates (at step 945) the current playback device from the current HCL device by updating the current HCL device entry by removing the identifier 1010 of the current playback device in the current HCL device entry 1001. The method 900 then ends.

Some embodiments may be conveniently implemented by using a conventional general purpose or a specialized digital computer or microprocessor programmed according to the teachings herein, as will be apparent to those skilled in the computer art. Appropriate software coding may be prepared by programmers based on the teachings herein, as will be apparent to those skilled in the software art. Some embodiments may also be implemented by the preparation of application-specific integrated circuits or by interconnecting an appropriate network of conventional component circuits, as will be readily apparent to those skilled in the art. Those of skill in the art would understand that information and signals may be represented by using any of a variety of different technologies and techniques. For example, data, instructions, requests, information, signals, bits, symbols, and chips that may be referenced throughout the above description may be represented by voltages, currents, electromagnetic waves, magnetic fields or particles, optical fields or particles, or any combination thereof.

Some embodiments include a computer program product comprising a computer readable medium and/or media having instructions stored thereon or therein and, when executed for example, by a processor, the instructions perform methods, techniques, or embodiments described herein, the computer readable medium comprising sets of instructions for performing various steps of the methods, techniques, or embodiments described herein. The computer readable medium may comprise a storage medium having instructions stored thereon or therein, which may be used to control, or cause, a computer to perform any of the processes of an embodiment. The storage medium may include, without limitation, any type of disk including floppy disks, mini disks (MDs), optical disks, DVDs, CD-ROMs, micro-drives, and magneto-optical disks, ROMs, RAMs, EPROMs, EEPROMs, DRAMs, VRAMs, flash memory devices including flash cards, magnetic or optical cards, nanosystems including molecular memory ICs, RAID devices, remote data storage, archive and/or warehousing, or any other type of media or device suitable for storing instructions and/or data thereon or therein.

Stored on any one of the computer readable medium and/or media, some embodiments include software instructions for controlling both the hardware of the general purpose or specialized computer or microprocessor, and for enabling the computer or microprocessor to interact with a human user and/or other mechanism by using the results of an embodiment. Such software may include without limitation device drivers, operating systems, and user applications. Ultimately, such computer readable media further includes software instructions for performing embodiments described herein. Included in the programming and/or software of the general-purpose and/or specialized computer or microprocessor are software modules for implementing some embodiments.

Those of skill would further appreciate that the various illustrative logical blocks, modules, circuits, techniques, or method steps of embodiments described herein may be implemented as electronic hardware, computer software, or combinations of both. To illustrate this interchangeability of hardware and software, various illustrative components, blocks, modules, circuits, and steps have been described herein generally in terms of their functionality. Whether such functionality is implemented as hardware or software depends upon the particular application and design constraints imposed on the overall system. Skilled artisans may implement the described functionality in varying ways for each particular application, but such implementation decisions should not be interpreted as causing a departure from the embodiments described herein.

The various illustrative logical blocks, modules, and circuits described in connection with the embodiments disclosed herein may be implemented or performed with a general-purpose processor, a digital signal processor (DSP), an application-specific integrated circuit (ASIC), a field programmable gate array (FPGA) or other programmable logic device, discrete gate or transistor logic, discrete hardware components, or any combination thereof designed to perform the functions described herein. A general-purpose processor may be a microprocessor, but in the alternative, the processor may be any conventional processor, controller, microcontroller, or state machine. A processor may also be implemented as a combination of computing devices, e.g., a combination of a DSP and a microprocessor, a plurality of microprocessors, one or more microprocessors in conjunction with a DSP core, or any other such configuration.

The techniques or steps of a method described in connection with the embodiments disclosed herein may be embodied directly in hardware, in software executed by a processor, or in a combination of the two. In some embodiments, any software application, module, or layer described herein may comprise an engine comprising firmware or software and hardware configured to perform embodiments described herein. In general, functions of a software application, module, or layer described herein may be embodied directly in hardware, or embodied as software executed by a processor, or embodied as a combination of the two. A software application, module, or layer may reside in RAM memory, flash memory, ROM memory, EPROM memory, EEPROM memory, registers, hard disk, a removable disk, a CD-ROM, or any other form of storage medium known in the art. An exemplary storage medium is coupled to the processor such that the processor can read data from, and write data to, the storage medium. In the alternative, the storage medium may be integral to the processor. The processor and the storage medium may reside in an ASIC. The ASIC may reside in a user device. In the alternative, the processor and the storage medium may reside as discrete components in a user device.

While the embodiments described herein have been described with reference to numerous specific details, one of ordinary skill in the art will recognize that the embodiments can be embodied in other specific forms without departing from the spirit of the embodiments. Thus, one of ordinary skill in the art would understand that the embodiments described herein are not to be limited by the foregoing illustrative details, but rather are to be defined by the appended claims. 

1-23. (canceled)
 24. A system comprising: a storage device; a communications adapter; processing circuitry configured to: access a licensing manager data structure stored in the storage device; determine a version of a media file based on a version identifier of the media file; retrieve, from the licensing manager data structure stored in the storage device, a maximum number of playback devices on which the version of the media file is permitted to be stored; determine whether a number of playback devices on which the media file is stored is lower than the maximum number; and in response to determining that the number of playback devices on which the media file is stored is lower than the maximum number, enable storage of the media file on a playback device by transmitting a command to the playback device using the communications adapter.
 25. The system of claim 24, wherein the version of the media file identifies a maximum number of playback devices on which the version of the media file is permitted to be stored.
 26. The system of claim 24, wherein: the media file comprises different licensing versions, each licensing version having a different number of associated licenses for the media file; the media file is embedded with a version identifier that is mapped to a number of associated licenses by using a license mapping data structure; and the license mapping data structure comprises a plurality of media file version entries, each media file version entry comprising a version identifier and a number of licenses associated with the version identifier.
 27. The system of claim 24, wherein the processing circuitry is further configured to: determine a fingerprint, checksum, or hash value of the media file, the fingerprint, checksum, or hash value comprising the version identifier of the media file; and map the version identifier to a number of associated licenses of the media file by using a license mapping data structure, the license mapping data structure comprising a plurality of media file version entries, each media file version entry comprising a version identifier and a number of licenses associated with the version identifier.
 28. The system of claim 24, wherein each license for a media file grants legal permission for a user to store the media file on a single playback device.
 29. The system of claim 24, wherein the processing circuitry is further configured to: register a plurality of playback devices by using a device registration data structure stored in the storage device, wherein each playback device is registered with only a single central licensing device concurrently, the device registration data structure comprising a plurality of central licensing device entries, each central licensing device entry representing a central licensing device and storing a central licensing device identifier that specifically identifies the central licensing device and one or more playback device identifiers that specifically identifies one or more playback devices currently registered with the central licensing device.
 30. The system of claim 24, wherein the processing circuitry is further configured to: receive, from a user, a removal request for deleting a particular media file from a particular playback device; transmit a command using the communications adapter to the particulate playback device to delete the particular media file from the particular playback device; and decrement, in the licensing manager data structure stored in the storage device, the count of playback devices on which the particular media file is currently stored.
 31. A method comprising: accessing a licensing manager data structure; determining a version of a media file based on a version identifier of the media file; retrieving, from the licensing manager data structure, a maximum number of playback devices on which the version of the media file is permitted to be stored; determining whether a number of playback devices on which the media file is stored is lower than the maximum number; and in response to determining that the number of playback devices on which the media file is stored is lower than the maximum number, enabling storage of the media file on a playback device.
 32. The method of claim 31, wherein the version of the media file identifies a maximum number of playback devices on which the version of the media file is permitted to be stored.
 33. The method of claim 31, wherein: the media file comprises different licensing versions, each licensing version having a different number of associated licenses for the media file; the media file is embedded with a version identifier that is mapped to a number of associated licenses by using a license mapping data structure; and the license mapping data structure comprises a plurality of media file version entries, each media file version entry comprising a version identifier and a number of licenses associated with the version identifier.
 34. The method of claim 31, further comprising: determining a fingerprint, checksum, or hash value of the media file, the fingerprint, checksum, or hash value comprising the version identifier of the media file; and mapping the version identifier to a number of associated licenses of the media file by using a license mapping data structure, the license mapping data structure comprising a plurality of media file version entries, each media file version entry comprising a version identifier and a number of licenses associated with the version identifier.
 35. The method of claim 31, wherein each license for a media file grants legal permission for a user to store the media file on a single playback device.
 36. The method of claim 31, further comprising: registering a plurality of playback devices by using a device registration data structure, a playback device being registered with only a single central licensing device concurrently, the device registration data structure comprising a plurality of central licensing device entries, each central licensing device entry representing a central licensing device and storing a central licensing device identifier that specifically identifies the central licensing device and one or more playback device identifiers that specifically identifies one or more playback devices currently registered with the central licensing device.
 37. The method of claim 31, further comprising: receiving, from a user, a removal request for deleting a particular media file from a particular playback device; deleting the particular media file from the particular playback device; and decrementing, in the licensing manager data structure, the count of playback devices on which the particular media file is currently stored.
 38. A non-transitory computer readable medium having instructions stored thereon comprising sets of instructions for: accessing a licensing manager data structure; determining a version of a media file based on a version identifier of the media file; retrieving, from the licensing manager data structure, a maximum number of playback devices on which the version of the media file is permitted to be stored; determining whether a number of playback devices on which the media file is stored is lower than the maximum number; and in response to determining that the number of playback devices on which the media file is stored is lower than the maximum number, enabling storage of the media file on a playback device.
 39. The computer readable medium of claim 38, wherein the version of the media file identifies a maximum number of playback devices on which the version of the media file is permitted to be stored.
 40. The computer readable medium of claim 38, wherein: the media file comprises different licensing versions, each licensing version having a different number of associated licenses for the media file; the media file is embedded with a version identifier that is mapped to a number of associated licenses by using a license mapping data structure; and the license mapping data structure comprises a plurality of media file version entries, each media file version entry comprising a version identifier and a number of licenses associated with the version identifier.
 41. The computer readable medium of claim 38, further comprising sets of instructions for: determining a fingerprint, checksum, or hash value of the media file, the fingerprint, checksum, or hash value comprising the version identifier of the media file; and mapping the version identifier to a number of associated licenses of the media file by using a license mapping data structure, the license mapping data structure comprising a plurality of media file version entries, each media file version entry comprising a version identifier and a number of licenses associated with the version identifier.
 42. The computer readable medium of claim 38, wherein each license for a media file grants legal permission for a user to store the media file on a single playback device.
 43. The computer readable medium of claim 38, further comprising sets of instructions for: receiving, from a user, a removal request for deleting a particular media file from a particular playback device; deleting the particular media file from the particular playback device; and decrementing, in the licensing manager data structure, the count of playback devices on which the particular media file is currently stored. 